/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cadastro;

import CampoDeTexto.campo;
import java.awt.Color;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import principalcontrole.principal;
import utilitario.Funcionario;
import utilitario.Arquivo;
import utilitario.cpf;
import utilitario.formEditaFuncionario;

/**
 *
 * @author marcos
 */
public class funcionario extends javax.swing.JFrame {

    public ArrayList<Funcionario> lista_de_funcionarios = new ArrayList<>();
    private static Object lock = new Object();
    private static formEditaFuncionario janela;
   principal a;
    /**
     * Creates new form funcionario
     */

     public funcionario(principal a) {
       this();
       this.a = a;
     }

    public funcionario() {
        initComponents();

        //limitando campos de texto
        txtcep.setDocument(new CampoDeTexto.apenasNumeros());
        txtcidade.setDocument(new CampoDeTexto.apenasMaiusculas());
        txtcpf.setDocument(new CampoDeTexto.apenasNumeros());
        txtid.setDocument(new CampoDeTexto.apenasNumeros());
        txtidentidade.setDocument(new CampoDeTexto.apenasNumeros());
        txtmae.setDocument(new CampoDeTexto.apenasMaiusculas());
        txtnome.setDocument(new CampoDeTexto.apenasMaiusculas());
        txtnumero.setDocument(new CampoDeTexto.apenasNumeros());
        txtsalario.setDocument(new CampoDeTexto.apenasNumerosPonto());

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        tblfuncionarioscadastrados = new javax.swing.JTable();
        jSeparator1 = new javax.swing.JSeparator();
        btndeletar = new javax.swing.JButton();
        btneditar = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        lblnome = new javax.swing.JLabel();
        txtnome = new javax.swing.JTextField();
        txttelefone = new javax.swing.JTextField();
        lbltelefone = new javax.swing.JLabel();
        lblendereco = new javax.swing.JLabel();
        txtendereco = new javax.swing.JTextField();
        txtrua = new javax.swing.JTextField();
        lblrua = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        txtid = new javax.swing.JTextField();
        lblrs = new javax.swing.JLabel();
        lbllotacao = new javax.swing.JLabel();
        txtlotacao = new javax.swing.JTextField();
        cboxcargo = new javax.swing.JComboBox();
        lblcargo = new javax.swing.JLabel();
        cboxsexo = new javax.swing.JComboBox();
        txtidentidade = new javax.swing.JTextField();
        lblsexo = new javax.swing.JLabel();
        lblidentidade = new javax.swing.JLabel();
        lbllogin = new javax.swing.JLabel();
        txtlogin = new javax.swing.JTextField();
        txtsenha = new javax.swing.JPasswordField();
        lblsenha = new javax.swing.JLabel();
        txtconfirmasenha = new javax.swing.JPasswordField();
        lblconfirmasenha = new javax.swing.JLabel();
        btncadastrar2 = new javax.swing.JButton();
        txtnumero = new javax.swing.JTextField();
        lblnumero = new javax.swing.JLabel();
        txtbairro = new javax.swing.JTextField();
        lblbairro = new javax.swing.JLabel();
        txtcidade = new javax.swing.JTextField();
        lblcidade = new javax.swing.JLabel();
        txtcep = new javax.swing.JTextField();
        lblcep = new javax.swing.JLabel();
        lblcomplemento = new javax.swing.JLabel();
        txtcomplemento = new javax.swing.JTextField();
        txtmae = new javax.swing.JTextField();
        lblmae = new javax.swing.JLabel();
        lbladmissao = new javax.swing.JLabel();
        txtcpf = new javax.swing.JTextField();
        lblcpf = new javax.swing.JLabel();
        datadmissao = new com.toedter.calendar.JDateChooser();
        cboxestadoCivil = new javax.swing.JComboBox();
        lblestadoCivil = new javax.swing.JLabel();
        lblnascimento = new javax.swing.JLabel();
        datnascimento = new com.toedter.calendar.JDateChooser();
        lblid = new javax.swing.JLabel();
        lblsalario = new javax.swing.JLabel();
        txtsalario = new javax.swing.JTextField();
        btncancelar = new javax.swing.JButton();
        btnok = new javax.swing.JButton();
        lblFundo = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(800, 600));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });
        getContentPane().setLayout(null);

        tblfuncionarioscadastrados.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tblfuncionarioscadastrados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "Nome", "Cargo", "Telefone", "Endereço", "CPF"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblfuncionarioscadastrados.setMinimumSize(new java.awt.Dimension(720, 144));
        tblfuncionarioscadastrados.setPreferredSize(new java.awt.Dimension(720, 144));
        jScrollPane1.setViewportView(tblfuncionarioscadastrados);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(40, 410, 720, 110);

        jSeparator1.setForeground(new java.awt.Color(0, 0, 0));
        getContentPane().add(jSeparator1);
        jSeparator1.setBounds(20, 370, 780, 30);

        btndeletar.setText("Deletar");
        btndeletar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btndeletarActionPerformed(evt);
            }
        });
        getContentPane().add(btndeletar);
        btndeletar.setBounds(150, 530, 100, 30);

        btneditar.setText("Editar");
        btneditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btneditarActionPerformed(evt);
            }
        });
        getContentPane().add(btneditar);
        btneditar.setBounds(40, 530, 100, 30);

        jPanel1.setAutoscrolls(true);
        jPanel1.setLayout(null);

        lblnome.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblnome.setText("Nome:");
        jPanel1.add(lblnome);
        lblnome.setBounds(20, 10, 40, 14);

        txtnome.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtnome.setName("Nome"); // NOI18N
        jPanel1.add(txtnome);
        txtnome.setBounds(20, 30, 180, 30);

        txttelefone.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txttelefone.setName("Telefone"); // NOI18N
        jPanel1.add(txttelefone);
        txttelefone.setBounds(220, 30, 140, 30);

        lbltelefone.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lbltelefone.setText("Telefone:");
        jPanel1.add(lbltelefone);
        lbltelefone.setBounds(220, 10, 60, 14);

        lblendereco.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblendereco.setText("Endereço:");
        jPanel1.add(lblendereco);
        lblendereco.setBounds(380, 10, 60, 14);

        txtendereco.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtendereco.setName("Endereço"); // NOI18N
        jPanel1.add(txtendereco);
        txtendereco.setBounds(380, 30, 200, 30);

        txtrua.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtrua.setName("Rua"); // NOI18N
        jPanel1.add(txtrua);
        txtrua.setBounds(600, 30, 140, 30);

        lblrua.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblrua.setText("Rua:");
        jPanel1.add(lblrua);
        lblrua.setBounds(600, 10, 30, 14);

        jLabel8.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel8.setText("(apenas números)");
        jPanel1.add(jLabel8);
        jLabel8.setBounds(145, 285, 110, 14);

        txtid.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtid.setName("Id"); // NOI18N
        jPanel1.add(txtid);
        txtid.setBounds(20, 270, 120, 30);

        lblrs.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblrs.setText("R$");
        jPanel1.add(lblrs);
        lblrs.setBounds(500, 220, 20, 14);

        lbllotacao.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lbllotacao.setText("Lotação:");
        jPanel1.add(lbllotacao);
        lbllotacao.setBounds(500, 250, 50, 14);

        txtlotacao.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtlotacao.setName("Loração"); // NOI18N
        jPanel1.add(txtlotacao);
        txtlotacao.setBounds(500, 270, 190, 30);

        cboxcargo.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        cboxcargo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vendedor", "Caixa", "Comprador", "Recebedor", "Finnceiro" }));
        jPanel1.add(cboxcargo);
        cboxcargo.setBounds(380, 210, 100, 30);

        lblcargo.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblcargo.setText("Cargo:");
        jPanel1.add(lblcargo);
        lblcargo.setBounds(380, 190, 40, 14);

        cboxsexo.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        cboxsexo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Feminino", "Masculino" }));
        jPanel1.add(cboxsexo);
        cboxsexo.setBounds(140, 210, 100, 30);

        txtidentidade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtidentidade.setName("Identidade"); // NOI18N
        jPanel1.add(txtidentidade);
        txtidentidade.setBounds(20, 210, 100, 30);

        lblsexo.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblsexo.setText("Sexo:");
        jPanel1.add(lblsexo);
        lblsexo.setBounds(140, 190, 40, 14);

        lblidentidade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblidentidade.setText("Identidade:");
        jPanel1.add(lblidentidade);
        lblidentidade.setBounds(20, 190, 65, 14);

        lbllogin.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lbllogin.setText("Login:");
        lbllogin.setMaximumSize(null);
        jPanel1.add(lbllogin);
        lbllogin.setBounds(20, 310, 40, 14);

        txtlogin.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtlogin.setName("Login"); // NOI18N
        jPanel1.add(txtlogin);
        txtlogin.setBounds(20, 330, 180, 30);

        txtsenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtsenha.setName("Senha"); // NOI18N
        jPanel1.add(txtsenha);
        txtsenha.setBounds(220, 330, 180, 30);

        lblsenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblsenha.setText("Senha:");
        lblsenha.setMaximumSize(null);
        jPanel1.add(lblsenha);
        lblsenha.setBounds(220, 310, 40, 14);

        txtconfirmasenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtconfirmasenha.setName("Confirmar Senha"); // NOI18N
        jPanel1.add(txtconfirmasenha);
        txtconfirmasenha.setBounds(420, 330, 180, 30);

        lblconfirmasenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblconfirmasenha.setText("Confirme a senha:");
        lblconfirmasenha.setMaximumSize(null);
        jPanel1.add(lblconfirmasenha);
        lblconfirmasenha.setBounds(420, 310, 110, 14);

        btncadastrar2.setText("Cadastrar");
        btncadastrar2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btncadastrar2ActionPerformed(evt);
            }
        });
        jPanel1.add(btncadastrar2);
        btncadastrar2.setBounds(620, 330, 100, 30);

        txtnumero.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtnumero.setName("Número"); // NOI18N
        jPanel1.add(txtnumero);
        txtnumero.setBounds(20, 90, 180, 30);

        lblnumero.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblnumero.setText("Número:");
        jPanel1.add(lblnumero);
        lblnumero.setBounds(20, 70, 60, 14);

        txtbairro.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtbairro.setName("Bairro"); // NOI18N
        jPanel1.add(txtbairro);
        txtbairro.setBounds(220, 90, 140, 30);

        lblbairro.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblbairro.setText("Bairro:");
        jPanel1.add(lblbairro);
        lblbairro.setBounds(220, 70, 40, 14);

        txtcidade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtcidade.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        txtcidade.setName("Cidade"); // NOI18N
        jPanel1.add(txtcidade);
        txtcidade.setBounds(380, 90, 200, 30);

        lblcidade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblcidade.setText("Cidade:");
        jPanel1.add(lblcidade);
        lblcidade.setBounds(380, 70, 60, 14);

        txtcep.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtcep.setName("CEP"); // NOI18N
        jPanel1.add(txtcep);
        txtcep.setBounds(600, 90, 140, 30);

        lblcep.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblcep.setText("CEP:");
        jPanel1.add(lblcep);
        lblcep.setBounds(600, 70, 30, 14);

        lblcomplemento.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblcomplemento.setText("Complemento:");
        jPanel1.add(lblcomplemento);
        lblcomplemento.setBounds(20, 130, 90, 14);

        txtcomplemento.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtcomplemento.setName("Completo"); // NOI18N
        jPanel1.add(txtcomplemento);
        txtcomplemento.setBounds(20, 150, 180, 30);

        txtmae.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtmae.setName("Nome da Mae"); // NOI18N
        jPanel1.add(txtmae);
        txtmae.setBounds(220, 150, 140, 30);

        lblmae.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblmae.setText("Nome da Mãe:");
        jPanel1.add(lblmae);
        lblmae.setBounds(220, 130, 80, 14);

        lbladmissao.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lbladmissao.setText("Data de Admissão:");
        jPanel1.add(lbladmissao);
        lbladmissao.setBounds(280, 250, 110, 14);

        txtcpf.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtcpf.setName("CPF"); // NOI18N
        jPanel1.add(txtcpf);
        txtcpf.setBounds(600, 150, 140, 30);

        lblcpf.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblcpf.setText("CPF:");
        jPanel1.add(lblcpf);
        lblcpf.setBounds(600, 130, 30, 14);

        datadmissao.setFont(new java.awt.Font("Tahoma", 3, 11)); // NOI18N
        jPanel1.add(datadmissao);
        datadmissao.setBounds(280, 270, 200, 30);

        cboxestadoCivil.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        cboxestadoCivil.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Solteiro", "Casado", "Divorciado", "Sep. Jud.", "Viúvo" }));
        jPanel1.add(cboxestadoCivil);
        cboxestadoCivil.setBounds(260, 210, 100, 30);

        lblestadoCivil.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblestadoCivil.setText("Estado Civil:");
        jPanel1.add(lblestadoCivil);
        lblestadoCivil.setBounds(260, 190, 80, 14);

        lblnascimento.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblnascimento.setText("Data de Nascimento:");
        jPanel1.add(lblnascimento);
        lblnascimento.setBounds(380, 130, 120, 14);

        datnascimento.setFont(new java.awt.Font("Tahoma", 3, 11)); // NOI18N
        jPanel1.add(datnascimento);
        datnascimento.setBounds(380, 150, 200, 30);

        lblid.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblid.setText("ID");
        jPanel1.add(lblid);
        lblid.setBounds(20, 250, 20, 14);

        lblsalario.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        lblsalario.setText("Salário:");
        jPanel1.add(lblsalario);
        lblsalario.setBounds(520, 190, 50, 14);

        txtsalario.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        txtsalario.setName("Salário"); // NOI18N
        jPanel1.add(txtsalario);
        txtsalario.setBounds(520, 210, 190, 30);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(20, 0, 760, 370);

        btncancelar.setText("Cancelar");
        btncancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btncancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btncancelar);
        btncancelar.setBounds(620, 530, 100, 30);

        btnok.setText("OK");
        btnok.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnokActionPerformed(evt);
            }
        });
        getContentPane().add(btnok);
        btnok.setBounds(500, 530, 100, 30);

        lblFundo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/fundo_fornecedor.png"))); // NOI18N
        getContentPane().add(lblFundo);
        lblFundo.setBounds(0, 10, 800, 600);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    public void preencherTabela(ArrayList<Funcionario> lista) {
        int tamanho = lista.size();
        for (int i = 0; i < tamanho; i++) {
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getId() + "", i, 0);
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getNome(), i, 1);
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getCargo(), i, 2);
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getTelefone(), i, 3);
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getEndereco(), i, 4);
            tblfuncionarioscadastrados.getModel().setValueAt(lista.get(i).getCpf(), i, 5);
        }
    }

    private void btneditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btneditarActionPerformed
        if (tblfuncionarioscadastrados.getSelectedRow() > -1) //verificando se ha funcionarios cadastrados
        {
            if (!lista_de_funcionarios.isEmpty()) {

                janela = new formEditaFuncionario(this);

                /*
                 * passando para a janela de edição as informaçoes atuais
                 * 1 lista de funcionarios cadastrados
                 * 2 funcionario que será editado
                 * 3 qual a posição do funcionario ha ser editado
                 */
                janela.getEditFuncionario(lista_de_funcionarios, lista_de_funcionarios.get(tblfuncionarioscadastrados.getSelectedRow()), tblfuncionarioscadastrados.getSelectedRow());
                janela.setVisible(true);
                //passando instancia para a proxima janela
                this.setEnabled(false);
                Thread t = new Thread() {
                    public void run() {
                        System.out.println("Criando");
                        synchronized (lock) {
                            while (janela.isVisible()) {
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException ex) {
                                    Logger.getLogger(funcionario.class.getName()).log(Level.SEVERE, null, ex);
                                }
                            }
                        }
                        lista_de_funcionarios = Arquivo.lerFuncionarioTemporariamente();
                        preencherTabela(lista_de_funcionarios);
                        Arquivo.deletFuncionarioTemporario();
                        return;
                    }
                };
                t.start();
            } else {
                System.out.println("Não ha funcionarios");
            }
        } else {
            System.out.println("Selecione um funcionario para ser editado");
        }
    }//GEN-LAST:event_btneditarActionPerformed

    private void addLinha() {
        DefaultTableModel c = (DefaultTableModel) tblfuncionarioscadastrados.getModel();
        Object[] linha = {null, null, null, null, null, null};
        c.addRow(linha);
    }

    private void removeLinha(int posicao) {
        DefaultTableModel c = (DefaultTableModel) tblfuncionarioscadastrados.getModel();
        c.removeRow(posicao);
    }

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        lista_de_funcionarios = Arquivo.lerFuncionario();
        //adicionando o numero de linhas da tabela
        for (int i = 0; i < lista_de_funcionarios.size(); i++) {
            this.addLinha();
        }
        if (lista_de_funcionarios.isEmpty() == false) {
            preencherTabela(lista_de_funcionarios);
        }
    }//GEN-LAST:event_formWindowOpened

    private void btncadastrar2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btncadastrar2ActionPerformed
        //verificando se cpf é valido
        if(!cpf.verificar(txtcpf.getText())){
            JOptionPane.showMessageDialog(rootPane, "CPF informado é invalido");
            return ;
        }


        if (!campo.isNull(this.criaListaDeTexto())) {
            Funcionario funcionario = new Funcionario();
            funcionario.setNome(txtnome.getText());
            funcionario.setTelefone(txttelefone.getText());
            funcionario.setEndereco(txtendereco.getText());
            funcionario.setCpf(txtcpf.getText());
            funcionario.setIdentidade(txtidentidade.getText());
            funcionario.setLogin(txtlogin.getText());
            funcionario.setRua(txtrua.getText());
            funcionario.setCep(txtcep.getText());
            funcionario.setNumero(txtnumero.getText());
            funcionario.setBairro(txtbairro.getText());
            funcionario.setNascimento(datnascimento.getCalendar());
            funcionario.setAdmicao(datadmissao.getCalendar());
            funcionario.setComplemento(txtcomplemento.getText());
            funcionario.setCidade(txtcidade.getText());
            funcionario.setNome_da_mae(txtmae.getText());
            funcionario.setLotacao(txtlotacao.getText());
            funcionario.setNivel_de_acesso(cboxcargo.getSelectedIndex());

            //pegando o cargo do funcionario
            switch (cboxcargo.getSelectedIndex()) {
                case 0: {
                    funcionario.setCargo("Vendedor");
                    break;
                }
                case 1: {
                    funcionario.setCargo("Caixa");
                    break;
                }
                case 2: {
                    funcionario.setCargo("Comprador");
                    break;
                }
                case 3: {
                    funcionario.setCargo("Recebedor");
                    break;
                }
                case 4: {
                    funcionario.setCargo("Financeiro");
                    break;
                }
            }
            //pegando sexo escolhido
            switch (cboxsexo.getSelectedIndex()) {
                case 0: {
                    funcionario.setSexo("Feminino");
                    break;
                }
                case 1: {
                    funcionario.setSexo("Masculino");
                    break;
                }
            }
            //pegando o estado civil escolhido
            switch (cboxestadoCivil.getSelectedIndex()) {
                case 0: {
                    funcionario.setEstado_civil("Solteiro");
                    break;
                }
                case 1: {
                    funcionario.setEstado_civil("Casado");
                    break;
                }
                case 2: {
                    funcionario.setEstado_civil("Divorciado");
                    break;
                }
                case 3: {
                    funcionario.setEstado_civil("Separado Judicialmente");
                    break;
                }
                case 4: {
                    funcionario.setEstado_civil("Viúvo");
                    break;
                }
            }


            if (txtsenha.getText().equals(txtconfirmasenha.getText())) {
                funcionario.setSalario(Double.parseDouble(txtlotacao.getText()));
                funcionario.setId(Integer.parseInt(txtid.getText()));
                funcionario.setSenha(txtsenha.getText());
                if (Funcionario.isCadastravel(lista_de_funcionarios, funcionario)) {
                    lista_de_funcionarios.add(funcionario);
                    this.addLinha();
                    preencherTabela(lista_de_funcionarios);
                } else {
                    JOptionPane.showMessageDialog(this, "Existem campos vazios ou informações incorretas");
                }

            } else {
                JOptionPane.showMessageDialog(null, "Existem informações incorretas!");
            }
        }
    }//GEN-LAST:event_btncadastrar2ActionPerformed

    private void btndeletarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btndeletarActionPerformed
        int pos = tblfuncionarioscadastrados.getSelectedRow();
        if (tblfuncionarioscadastrados.getSelectedRow() > -1) {
            switch (JOptionPane.showConfirmDialog(null, "Tem certeza que quer deletar este funcionario?\n", "Deletar", JOptionPane.INFORMATION_MESSAGE, JOptionPane.YES_NO_OPTION)) {
                case 0: {
                    this.removeLinha(tblfuncionarioscadastrados.getSelectedRow());
                    lista_de_funcionarios.remove(pos);
                }
            }
        }else{
            System.out.println("Selecione um funciionario para ser deletado");
        }
    }//GEN-LAST:event_btndeletarActionPerformed

    private void btnokActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnokActionPerformed
         switch (JOptionPane.showConfirmDialog(null, "Deseja salvar as alterações realizadas?\n", "Salvar", JOptionPane.INFORMATION_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION)) {
            case 0: {
                Arquivo.armazenarFuncionario(lista_de_funcionarios);
                this.dispose();
            }
            case 1:{
                this.dispose();
            }
         }
    }//GEN-LAST:event_btnokActionPerformed

    private void btncancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btncancelarActionPerformed
        this.dispose();
    }//GEN-LAST:event_btncancelarActionPerformed

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        // TODO add your handling code here:
        a.setVisible(true);
        Thread t = new Thread();
        t.start();
    }//GEN-LAST:event_formWindowClosed

    private ArrayList<JTextField> criaListaDeTexto() {
        ArrayList<JTextField> lista = new ArrayList<>();
        //adicionando campos a lista
        lista.add(this.txtbairro);
        lista.add(this.txtcep);
        lista.add(this.txtcidade);
        lista.add(this.txtcomplemento);
        lista.add(this.txtconfirmasenha);
        lista.add(this.txtcpf);
        lista.add(this.txtendereco);
        lista.add(this.txtid);
        lista.add(this.txtidentidade);
        lista.add(this.txtlogin);
        lista.add(this.txtlotacao);
        lista.add(this.txtmae);
        lista.add(this.txtnome);
        lista.add(this.txtnumero);
        lista.add(this.txtrua);
        lista.add(this.txtsalario);
        lista.add(this.txtsenha);
        lista.add(this.txttelefone);


        return lista;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(formEditaFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(formEditaFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(formEditaFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(formEditaFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new funcionario().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btncadastrar2;
    private javax.swing.JButton btncancelar;
    private javax.swing.JButton btndeletar;
    private javax.swing.JButton btneditar;
    private javax.swing.JButton btnok;
    private javax.swing.JComboBox cboxcargo;
    private javax.swing.JComboBox cboxestadoCivil;
    private javax.swing.JComboBox cboxsexo;
    private com.toedter.calendar.JDateChooser datadmissao;
    private com.toedter.calendar.JDateChooser datnascimento;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JLabel lblFundo;
    private javax.swing.JLabel lbladmissao;
    private javax.swing.JLabel lblbairro;
    private javax.swing.JLabel lblcargo;
    private javax.swing.JLabel lblcep;
    private javax.swing.JLabel lblcidade;
    private javax.swing.JLabel lblcomplemento;
    private javax.swing.JLabel lblconfirmasenha;
    private javax.swing.JLabel lblcpf;
    private javax.swing.JLabel lblendereco;
    private javax.swing.JLabel lblestadoCivil;
    private javax.swing.JLabel lblid;
    private javax.swing.JLabel lblidentidade;
    private javax.swing.JLabel lbllogin;
    private javax.swing.JLabel lbllotacao;
    private javax.swing.JLabel lblmae;
    private javax.swing.JLabel lblnascimento;
    private javax.swing.JLabel lblnome;
    private javax.swing.JLabel lblnumero;
    private javax.swing.JLabel lblrs;
    private javax.swing.JLabel lblrua;
    private javax.swing.JLabel lblsalario;
    private javax.swing.JLabel lblsenha;
    private javax.swing.JLabel lblsexo;
    private javax.swing.JLabel lbltelefone;
    private javax.swing.JTable tblfuncionarioscadastrados;
    private javax.swing.JTextField txtbairro;
    private javax.swing.JTextField txtcep;
    private javax.swing.JTextField txtcidade;
    private javax.swing.JTextField txtcomplemento;
    private javax.swing.JPasswordField txtconfirmasenha;
    private javax.swing.JTextField txtcpf;
    private javax.swing.JTextField txtendereco;
    private javax.swing.JTextField txtid;
    private javax.swing.JTextField txtidentidade;
    private javax.swing.JTextField txtlogin;
    private javax.swing.JTextField txtlotacao;
    private javax.swing.JTextField txtmae;
    private javax.swing.JTextField txtnome;
    private javax.swing.JTextField txtnumero;
    private javax.swing.JTextField txtrua;
    private javax.swing.JTextField txtsalario;
    private javax.swing.JPasswordField txtsenha;
    private javax.swing.JTextField txttelefone;
    // End of variables declaration//GEN-END:variables
}
